// 1. 定义用户数据列表（模拟数据库中的用户信息）
// 这里存储了系统中所有用户的信息，包括账号、密码、权限等
const userList = [
  {
    userId: 1,
    avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
    username: 'admin', // 用户名
    password: '111111', // 密码（实际项目中会加密，这里简化）
    desc: '平台管理员', // 描述
    roles: ['平台管理员'], // 角色
    buttons: ['cuser.detail'], // 可操作的按钮权限
    routes: ['home'], // 可访问的页面路由
    token: 'Admin Token', // 登录成功后返回的令牌（用于验证身份）
  },
  {
    userId: 2,
    avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
    username: 'system',
    password: '111111',
    desc: '系统管理员',
    roles: ['系统管理员'],
    buttons: ['cuser.detail', 'cuser.user'],
    routes: ['home'],
    token: 'System Token',
  },
];

// 2. 定义接口列表（模拟后端接口）
// 每个接口包含：请求地址、请求方式、处理逻辑
const apiList = [
  // 登录接口：用户输入账号密码，验证通过后返回令牌
  {
    url: '/api/user/login', // 接口地址
    method: 'post', // 请求方式（post适合提交数据）
    // 处理登录请求的函数（参数是前端发送的请求数据）
    response: request => {
      // 从请求中获取用户输入的账号和密码
      const inputUsername = request.body.username;
      const inputPassword = request.body.password;

      // 查找用户列表中是否有匹配的账号和密码
      let foundUser = null;
      for (let i = 0; i < userList.length; i++) {
        const user = userList[i];
        // 账号和密码都匹配才算找到
        if (user.username === inputUsername && user.password === inputPassword) {
          foundUser = user;
          break; // 找到后退出循环
        }
      }

      // 根据是否找到用户，返回不同结果
      if (!foundUser) {
        // 没找到：登录失败
        return {
          code: 201, // 201通常表示失败（约定的状态码）
          data: { message: '账号或密码不正确' }, // 错误提示
        };
      } else {
        // 找到：登录成功，返回令牌（后续用令牌验证身份）
        return {
          code: 200, // 200表示成功
          data: { token: foundUser.token },
        };
      }
    },
  },

  // 获取用户信息接口：用登录时得到的令牌，获取用户详细信息
  {
    url: '/api/user/info', // 接口地址
    method: 'get', // 请求方式（get适合获取数据）
    // 处理获取用户信息的函数
    response: request => {
      // 从请求头中获取令牌（登录时返回的token）
      const tokenFromClient = request.headers.token;

      // 查找令牌对应的用户
      let userInfo = null;
      for (let i = 0; i < userList.length; i++) {
        if (userList[i].token === tokenFromClient) {
          userInfo = userList[i];
          break;
        }
      }

      // 根据是否找到用户，返回不同结果
      if (!userInfo) {
        // 没找到：令牌无效或已过期
        return {
          code: 201,
          data: { message: '获取用户信息失败，请重新登录' },
        };
      } else {
        // 找到：返回用户详细信息
        return {
          code: 200,
          data: { checkUser: userInfo },
        };
      }
    },
  },
];

// 导出接口列表，供前端项目使用
export default apiList;
